<template>
	<view>
		<view class="goods-list">
			<view v-for="(item,index) in goodsListData" :key="index" @click="goToDetail(item)">
				<!-- 使用商品自定义组件 -->
				<my-goods :item="item"></my-goods>
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				// 请求参数对象
				queryObj: {
					// 查询关键词
					query: '',
					// 分类id
					cid: '',
					// 页码
					pagenum: 1,
					// 词条/页
					pagesize: 10,
				},
				// 商品数据
				goodsListData: [],
				// 分页
				total: 0,
				// 节流阀
				isLoading:false
			};
		},
		methods: {
			// 获取商品列表数据
			async getGoodsListData(cb) {
				this.isLoading=true
				const {
					data
				} = await uni.$http.get('/api/public/v1/goods/search', this.queryObj)
				this.isLoading=false
				
				// 判断cb是否为true，若有则调用关闭下拉刷新
				cb && cb()
				if (data.meta.status !== 200) {
					return uni.$showMsg()
				}
				
				this.goodsListData = [...this.goodsListData,...data.message.goods]
				this.total = data.message.total
			},
			
			// 跳转商品详情
			goToDetail(item){
				uni.navigateTo({
					url:'/subPkg/goods_detail/goods_detail?goods_id='+item.goods_id
				})
			}
		},
		// 加载进入携带数据
		onLoad(opptions) {
			this.queryObj.query = opptions.query || ''
			this.queryObj.cid = opptions.cid || ''
			this.getGoodsListData()
		},
		// 页面触底加载下一页数据
		onReachBottom(){
			if(this.queryObj.pagenum*this.queryObj.pagesize >=this.total) return uni.$showMsg('数据加载完毕')
			if(this.isLoading) return
			
			this.queryObj.pagenum++
			this.getGoodsListData()
		},
		// 监听页面下拉刷新重置页面数据
		onPullDownRefresh(){
			this.queryObj.pagenum=1
			this.total=0
			this.isLoading=false
			this.goodsListData=[]
			
			// 重新获取数据
			this.getGoodsListData(()=> uni.stopPullDownRefresh())
		}
	}
</script>

<style lang="scss">
</style>